package com.engine.salary.entity.salaryarchive.param;

import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.param.SalarySobRangeSaveParam;
import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO;
import com.engine.salary.entity.taxagent.param.TaxAgentRangeSaveParam;
import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 薪资档案导入处理参数
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryArchiveImportHandleParam {

    //**********************前端需传入参数**************************/

    /**
     * 上传文件id
     */
    String imageId;

    /**
     * 导入类型
     *
     * @see SalaryArchiveImportTypeEnum
     */
    String importType;

    /**
     * 列表类型
     * @see SalaryArchiveListTypeEnum
     */
    String listType;

    /**
     * 是否处理数据
     */
    boolean onlyCheck;

    /**
     * 是否是流程
     */
    boolean isProcess;

    /**
     * 是否是外部人员
     */
    boolean isExtEmp;

    /**
     * 说明
     */
    String description;

    //*****************************************************************/

    Long currentEmployeeId;
    String tenantKey;

    /**
     * 人员验证方式
     */
    String empValidType;

    // 待定薪列表
    boolean isPendingList;
    // 定薪列表
    boolean isFixedList;
    // 待停薪列表
    boolean isSuspendList;
    boolean isInit;
    boolean isSalaryItemAdjust;

    /**
     * 获取租户下所有的人员
     */
    List<DataCollectionEmployee> employees;


    /**
     * 获取所有个税扣缴义务人
     */
    Collection<TaxAgentManageRangeEmployeeDTO> taxAgentList;

    /**
     * 获取所有可被引用的薪资项目
     */
    List<SalaryItemPO> salaryItems;

    /**
     * 查询已有的薪资档案基本数据
     */
    Map<String, SalaryArchivePO> salaryArchivesMap;

    /**
     * 薪资项目id
     */
    Collection<Long> salaryItemIds;

    /**
     * 查询已生效的薪资项目数据
     */
    Map<String, List<SalaryArchiveItemPO>> effectiveItemListMap;

    /**
     * 查询未生效的薪资项目数据
     */
    Map<String, List<SalaryArchiveItemPO>> ineffectiveItemListMap;

    /**
     * 当前时间
     */
    Date nowTime = new Date();

    /**
     * 当天
     */
    Date today = new Date();

    /**
     * 待保存薪资档案
     */
    List<SalaryArchivePO> salaryArchiveSaves;

    /**
     * 待修改薪资档案
     */
    List<SalaryArchivePO> salaryArchiveUpdates;

    /**
     * 待保存薪资档案-薪资项目
     */
    List<SalaryArchiveItemPO> salaryArchiveItemSaves;

    /**
     * 待删除薪资档案-薪资项目
     */
    List<Long> salaryArchiveItemDelSalaryItemIds;

    /**
     * 待生成的人员范围
     */
    List<TaxAgentRangeSaveParam> taxAgentRanges;

    /**
     * 薪资账套
     */
//    List<SalarySobPO> salarySobList;

    /**
     * 薪资档案-账套关联
     */
    List<SalarySobRangeSaveParam> salaryArchiveSobSaves;

    /**
     * 薪资档案状态是否保持不变
     */
    Boolean keepStatus;
}
